#include <stdio.h>
#include <string.h>
#include <CurseUtils.h>

int	main(int argc, char **argv) {
    
    // 1. 仅初始化 ncurses 屏幕
    // createCurseScreen();
    // 2. 初始化 ncurses 屏幕, 并为变量赋值
    // int yMax, xMax;
    // createCurseScreenYX(yMax, xMax);
    // 3. 初始化 ncurses 屏幕, 并自动定义变量及赋值 (类似2)
    createCurseScreenYXDefine(yMax, xMax);
    // 4. 刷新屏幕，以备处理 Window 等动作
    curseScreenRefresh();

    // 5. 创建一个 Window (高度，宽度，坐标y起始，坐标x起始)
    int wy = 0, wx = 0;
    CurseWindow *window = createCurseWindow(yMax, xMax, wy, wx);
    curseWindowBox(window, 0, '-');
    // CurseWindow *window = createCurseWindowBox(yMax-1, xMax-1, wy, wx);
    // CurseWindow *window = createCurseWindowRect(yMax-1, xMax-1, wy, wx, 0, 0);
    // 5.1 刷新 Window 显示状态
    curseWindowRefresh(window); // 刷新 Window 显示，显示 Window 的边框变化
    
    // 5.2 在 Window 中间显示字符串
    char whello[20];
    int whello_len;

    sprintf(whello, "Hello: %s", "CurseWindow");
    whello_len = strlen(whello);
    // 5.2.1 移动光标到中间偏左部分，将 whello 打印到中间
    curseWindowCursorMove(window, yMax/2, xMax/2 - whello_len/2);
    curseWindowPrintf(window, "Hello: %s", "CurseWindow");
    curseWindowRefresh(window); // 刷新 Window 显示，显示打印内容

    curseWindowCursorMove(window, 1,1);
    curseWindowRefresh(window); // 刷新 Window 显示，显示光标变动

    // 6. 开始处理输入
    getch(); // 暂停(等待一个字符输入)

    // 7. 退出 ncurse 屏幕
    destroyCurseScreen();

    return 0;
}

// ┌------------------------------------------------------------------┐
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                        Hello: CurseWindow                        │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// │                                                                  │
// └------------------------------------------------------------------┘